package token

import "parse/src/constants"

// tokens
type Token struct {
	Type_    string      // token的类型
	Value    interface{} // token的值
	PosStart *Position   // token的开始位置
	PosEnd   *Position   // token的结束位置
}

// 构造函数初始化
func NewToken(t Token) Token {
	temp := t
	// 开始位置存在
	if t.PosStart != nil {
		temp.PosStart = t.PosStart.Copy()
		temp.PosEnd = t.PosStart.Copy()
		temp.PosEnd.Advance("")
	}
	if t.PosEnd != nil {
		temp.PosEnd = t.PosEnd
	}
	return temp
}

// 返回当前的类型与值是否匹配需要验证的token类型与值
func (t *Token) MatcheKeyword(value string) bool {
	return t.Type_ == "KEYWORD" && t.Value == constants.KEYWORDS[value]
}
